//获取菜品数量 通过传入的信息 来统计当前有多少菜品
//缓存数据 h5 小程序
//{food.id:{} }
import Taro from "@tarojs/taro";
import Events from './events';
let myEvent = new Events();
const foodKey="taro_key";
export function getFoodCount(food){
    let store = Taro.getStorageSync(foodKey);
    if(store&&store[food.id]){
        return store[food.id].Num;
    }else{
        return 0;
    }
}
//设置菜品数量 当加菜或者减菜时触发 num是由加减菜组件自身的state存储的 加、减都会调用该方法
//当减的数量等于0时 要删除菜品的数据结构
//当加菜时 发现数据结构中没有该菜品 新增菜品数据结构
export function setFoodCount(food,Num,type,callback){
    let store = Taro.getStorageSync(foodKey);
    if(!store){
        store={};
    }
    if(food){
        if(type=="add"){//加菜
            if(store[food.id]){//说明已经加过了
                store[food.id].Num=Num+1;
            }else{//说明没有加过
                store[food.id]={Num:1,...food};//给food添加Num属性
            }
            Taro.setStorageSync(foodKey,store);//进行缓存数据更新
            callback&&callback();//通知组件更新数据
        }else if(type=="cut"){//减菜
            if(Num==1){
                if(store[food.id]){
                    //删除菜品结构
                    delete store[food.id];
                }
            }else{
                store[food.id].Num = Num-1;//数量减1，结构不变
            }
            Taro.setStorageSync(foodKey,store);//进行缓存数据更新
            callback&&callback();//通知组件更新数据
        }
    }
}
//事件监听
export function getEvent(){
    return myEvent;
}
//获取所有的菜品数量及价格
export function getAllFoodInfo(){
    let store=Taro.getStorageSync(foodKey);
    let allPrice=0;
    let allNum=0;
    if(store){
        //对store进行遍历
        Object.keys(store).map((key,index)=>{
            if(store[key]){
                allPrice+=store[key].price*store[key].Num;
                allNum+=store[key].Num;
            }
        })
    }
    return {allPrice,allNum};
}